/*
 * 代号：凤凰
 * http://www.jphenix.org
 * 2014年7月4日
 * V4.0
 */
package com.jphenix.standard.threadpool;

import java.util.List;

import com.jphenix.driver.threadpool.ThreadEle;
import com.jphenix.standard.docs.BeanInfo;
import com.jphenix.standard.docs.ClassInfo;
import com.jphenix.standard.docs.Running;

/**
 * 线程管理类接口
 * 
 * 2022-07-12 完善了需要用到的方法
 * 
 * @author 马宝刚
 * 2014年7月4日
 */
@ClassInfo({"2022-07-12 17:25","线程管理类"})
@BeanInfo({"threadmanager"})
@Running({"1"})
public interface IThreadManager<T extends ThreadEle<?>>{

    /**
     * 将线程元素放入管理类
     * @param ele 线程元素
     * @return 是否添加成功
     * 2014年7月4日
     * @author 马宝刚
     */
    boolean addThread(T ele);
    
    /**
     * 获取线程序列
     * @return 线程序列
     * 2014年7月4日
     * @author 马宝刚
     */
    List<T> getThreadList();
    
    /**
     * 终止并移除指定名称的线程对象
     * @param threadName 线程名
     * @return 移除并终止的线程对象
     * 2022年7月12日
     * @author MBG
     */
    T remove(String threadName);
    
    /**
     * 终止全部线程
     * 2014年7月4日
     * @author 马宝刚
     */
    void stop();
    
    /**
     * 是否存在指定名字的线程
     * @param threadName 线程名
     * @return 是否存在指定名字的线程
     * 2022年7月12日
     * @author MBG
     */
    boolean hasThread(String threadName);
    
    
    /**
     * 返回指定线程对象
     * @param threadName 线程名
     * @return 线程对象
     * 2022年7月12日
     * @author MBG
     */
    T getThread(String threadName);
    
    
    /**
     * 获取所有的线程名序列
     * @return 有的线程名序列
     * 2022年7月12日
     * @author MBG
     */
    List<String> getThreadNames();
    
    
    /**
     * 终止并移除所有线程元素
     * 2022年7月12日
     * @author MBG
     */
    void removeAll();
}
